//*******************************//
//<xml fileName="IUserDao.java" ?>
//<author>申鱼川</author>
//<dateTime>2014-02-23</dateTime>
//</xml>
//*******************************//
package youleche.com.idao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import youleche.com.model.MUser;

/**
 * 用户接口
 * @author 申鱼川
 *
 */
public interface IUserDao {
	/**
	 * 判断用户是否登录
	 * @param userName 用户名
	 * @param password 用户密码
	 * @param Connection 连接对象
	 * @return 返回bool值 true登录正确
	 */
	public boolean login(MUser user, Connection con) throws Exception;
	
	/**
	 * 用户注册
	 * @param MUser 用户对象
	 * @param Connection 连接对象
	 * @return 注册影响的行数
	 */
	public int register(MUser user, Connection con) throws Exception;
	
	/**
	 * 判断用户是否注册
	 * @param con 数据库连接
	 * @param email 邮件地址
	 * @return 返回是否注册  true-注册
	 */
	public boolean isRegitered(Connection con, String email) throws Exception;
	
	/**
	 * 通过邮箱获取用户名
	 * @param email 邮箱
	 * @param con 数据库连接
	 * @return 返回用户名
	 */
	public String getUserNameByEmailAccount(String email, Connection con) throws Exception ;
	
	/**
	 * 通过电话号码获取用户名
	 * @param phoneNum 电话号码
	 * @param con 数据库连接
	 * @return 返回用户名
	 */
	public String getUserNameByPhoneNum(String phoneNum, Connection con) throws Exception ;

	
	/**
	 * 获取商家总数
	 * @param con 数据库连接
	 * @return 返回商家总数
	 * @throws Exception 异常
	 */
	public int getSellerForCount(Connection con) throws Exception;
	
	/**
	 * 判断管理员是否登陆
	 * @param con 数据库连接
	 * @param user 用户信息
	 * @return 返回登陆是否成功 true-成功
	 * @throws Exception 异常
	 */
	public boolean adminLogin(Connection con, MUser user) throws Exception;
	
	/**
	 * 激活用户信息
	 * @param con 数据库连接
	 * @param user 用户名
	 * @return 返回影响的行数
	 * @throws Exception 异常
	 */
	public int actUserInfo(Connection con, MUser user) throws Exception;
	
	/**
	 * 根据用户名获取用户
	 * @param con 数据库连接
	 * @param userName 用户名
	 * @return 用户信息
	 * @throws Exception 异常
	 */
	public MUser getUserByUserName(Connection con, String userName) throws Exception;
	
	/**
	 * 更新用户密码通过用户名
	 * @param con 数据库连接
	 * @param userName 用户名
	 * @return 返回影响的行数
	 * @throws Exception
	 */
	public int updatePasswordByUserName(Connection con, String userName, String pass) throws Exception;
	
	/**
	 * 判断是否是商家
	 * @param con 数据库连接
	 * @param email 邮件
	 * @return 返回是否是商家 true-是
	 * @throws Exception
	 */
	public boolean isSellserByEmail(Connection con, String email) throws Exception;
	
	
	/**
	 * 判断是否申请了商家
	 * @param con 数据库连接
	 * @param email 邮件
	 * @return 返回是否是商家 true-是
	 * @throws Exception
	 */
	public boolean isApplySellserByEmail(Connection con, String email) throws Exception;
	
	/**
	 * 变成商家
	 * @param con 数据库连接
	 * @param email 邮件
	 * @return 返回影响的行数
	 * @throws Exception 异常
	 */
	public int becomeSellerByEmail(Connection con, String email) throws Exception;
	
	/**
	 * 申请变成商家
	 * @param con 数据库连接
	 * @param email 邮件
	 * @return 返回影响的行数
	 * @throws Exception 异常
	 */
	public int applyBecomeSellerByEmail(Connection con, String email) throws Exception;
	
	/**
	 * 修改电话号码
	 * @param con 数据库连接
	 * @param email 邮件
	 * @return 返回影响的行数
	 * @throws Exception 异常
	 */
	public int updatePhoneByEmail(Connection con, String email, String phoneNum) throws Exception;
	
	/**
	 * 获取商家列表
	 * @param con 数据库连接
	 * @startIndex 数据表开始条数
	 * @endIndex 每次获取多少条数
	 * @return 返回商家列表
	 * @throws Exception 异常
	 */
	public List<MUser> getSellerList(Connection con, String startIndex, String endIndex) throws Exception;
	
	/**
	 * 获取申请商家列表
	 * @param con 数据库连接
	 * @startIndex 数据表开始条数
	 * @endIndex 每次获取多少条数
	 * @return 返回申请商家列表
	 * @throws Exception 异常
	 */
	public List<MUser> getApplySellerList(Connection con, String startIndex, String endIndex) throws Exception;
	
	/**
	 * 获取商家总数
	 * @param con 数据库连接
	 * @param a4_status a4商家状态（1-商家，1.5-申请中商家）
	 * @return 返回商家总数
	 * @throws Exception 异常
	 */
	public int getSellerCountByA4_Status(Connection con, String a4_status) throws Exception;
	
	/**
	 * 修改用户信息
	 * @param con 数据库连接
	 * @param user 用户信息
	 * @return 返回修改影响的行数
	 * @throws Exception 异常 
	 */
	public int updateUserInfoById(Connection con, MUser user) throws Exception;
	
	/**
	 * 根据用户ID得到用户信息
	 * @param con 数据库连接
	 * @param id id
	 * @return 返回用户信息
	 * @throws Exception 异常
	 */
	public MUser getUserById(Connection con, String id) throws Exception;
	
	/**
	 * 根据用户openID得到用户信息(openID即A10)
	 * @param con 数据库连接
	 * @param openID openID
	 * @return 返回用户信息
	 * @throws Exception 异常
	 */
	public MUser getUserByOpenID_A10(Connection con, String openId) throws Exception;
	
}
